查看原文
其他

机器学习丨一文看懂贝叶斯定理及应用

卢誉声 数据Seminar 2023-01-01

数据seminar每天18:00与您准时见面!




作者:卢誉声

来源:大数据DT(ID:hzdashuju)

关于作者:卢誉声,Autodesk数据平台和计算平台资深工程师,负责平台架构研发工作。工作内容涵盖大规模分布式系统的服务器后端、前端以及SDK的设计与研发,在数据处理、实时计算、分布式系统设计与实现、性能调优、高可用性和自动化等方面积累了丰富的经验。擅长C/C++、JavaScript开发,此外对Scala、Java以及移动平台等也有一定研究。



导读:在机器学习的一些主要任务中,贝叶斯模型是一种经典的简单学习模型。本文介绍贝叶斯模型及贝叶斯定理。


分类问题是一种经典的机器学习问题,而贝叶斯只是一种常见模型。比如最朴素的分类模型和最容易理解的模型其实是决策树模型,这种模型比较接近我们的决策思维。

主要思路是根据与我们解决问题相关的多个因素逐一确定下一步的方案,整个决策过程就像一棵自顶向下的树一样,故名决策树。如图2-1所示,这是一个人根据天气、温度、风况和气压几个因素决定是否去钓鱼的决策树。

▲图2-1 决策树示例

图中矩形的节点是决策节点,节点之间连线上的是属性值,而圆形节点是结果节点。

构建完这个树模型之后我们就可以预测这个人是否会出门钓鱼了。预测时,首先我们把数据输入到根节点。其次,根据数据属性值来选择某个特定的分支,每选择一个子节点再根据该节点分支的属性值选择该节点的特定分支,直到递归遍历到叶子节点为止,就可以得到预测结果了。

这个模型比较符合我们解决问题的逻辑思维,易于理解,因此常常会用在专家系统中。另外,这个模型需要存储的参数相对较少,预测耗时短,这也是它的优点。

但是决策树其实远不止这么简单,常用的决策树算法有ID3算法、C4.5算法、CART算法和随机森林等,由于本章重点不是决策树,因此这里就不过多阐述了,有兴趣的读者可以自行查阅相关资料。

现在让我们进入正题:贝叶斯模型。贝叶斯思想的最初提出者如下图所示——18世纪英国数学家托马斯·贝叶斯(Thomas Bayes)。

贝叶斯模型的核心思想是贝叶斯定理,这源于他生前为解决一个“逆概”问题而写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。

在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子里面有N个白球,M个黑球,你伸手进去摸一次,摸出黑球的概率是多少”。

逆向概率问题是相反的一类问题,比如“如果事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,我们如何推测此袋子里面的黑白球的比例?”

贝叶斯定理的思想出现在18世纪,但真正大规模使用发生在计算机出现之后。因为这个定理需要大规模的数据计算推理才能体现效果,它在很多计算机应用领域中都大有作为,如自然语言处理、机器学习、推荐系统、图像识别、博弈论,等等。

那么,我们可以使用贝叶斯模型来解决什么现实问题呢?以下是一个经典的彩球抽奖问题。

这是一个猜谜拿奖游戏,已知有A、B两个桶,A中有红球3个,白球1个;B中有红球2个,白球2个。现在我们随机选择一个桶,每次取出一个球并放回,判断反复4次后该桶是A还是B。

这其实是一个以小见大的问题。就像我们看现实世界,总是只能看到这个现实世界中的一部分表现形式(摸到了几个球或是什么颜色),但是不知道这个表现形式后面的本质(到底是哪一个桶)。当面对这类问题的时候贝叶斯模型就非常有用了。

贝叶斯模型是所有使用贝叶斯定理思想的模型的统称,本文主要讲解最简单的朴素贝叶斯分类器。不过考虑到可能有读者不太熟悉或者忘记了概率论,我们先来回顾一下基本概率论知识,这样才能理解贝叶斯定理。

第1个概念是先验概率。首先我们将A事件发生的概率写作P(A),称之为A的先验概率。所谓先验概率,就是根据以往的经验得到的概率。那么P(B)就是B的先验概率了。如果用文氏图表示,图2-3中A圈就表示A事件的样本集合,B圈就是B事件的样本集合。

▲图2-3 样本文氏图(1)

第2个概念是条件概率。所谓条件概率就是在另一个事件发生的条件下,某事件发生的概率,比如P(A|B)表示在B事件发生的条件下,A发生的概率;而P(B|A)就是在A事件发生条件下,B事件发生的概率。然后还有一个概念是联合概率,比如P(A∩B)表示A和B事件同时发生的概率。

我们来看图2-4,其中A和B交叉的部分就是A和B的联合概率,那么条件概率呢?就是交叉部分在A和B圈子里各占的比例,如果在A里,就是A事件发生情况下B事件发生的概率,如果在B里则反之。

▲图2-4 样本文氏图(2)

在了解基本的概率论知识后再来学习贝叶斯公式。贝叶斯公式很简单,就是B发生条件下,A事件发生的概率,可以通过A事件发生的条件下,B事件发生的条件概率或A的先验概率和B的先验概率计算出来:

那么这个公式到底有什么用呢?

举个例子,假如我们想要检查邮箱中是否存在垃圾邮件,最简单的方法是根据邮件中是否存在某些关键词来做判断。但实际情况是,并不是所有涉及某个关键词的邮件都是垃圾邮件。所以我们就可以做出一个假设:垃圾邮件中关键词的出现频率是有规律的。

根据这个假设,我们可以收集一批垃圾邮件和一批正常邮件,统计一下所有邮件中包含关键词的频率,垃圾邮件的出现频率以及关键词在垃圾邮件中的出现频率。

其中P(A)是垃圾邮件的出现频率,P(B)是关键词的出现频率,P(B|A)就是垃圾邮件中的关键词出现频率。那么由贝叶斯公式我们就可以推算出P(A|B),也就是存在特定关键词时某封邮件是垃圾邮件的概率了。

我们知道,我们平时只能观测到现实中某些现象的表现形式,正如我们只能知道垃圾邮件中关键词的出现频率。但是,我们总是希望能够通过现象去推断出事物的本质,而贝叶斯模型正是这种模型,让我们可以通过某些容易计算的概率去了解某些事物内在性质的概率。而通过收集大量的数据,则可以让贝叶斯这种概率类的模型更加准确。

不过这里还有个问题,在实际情况中会有很多的属性(也就是特征),比如判断一封邮件是不是垃圾邮件,肯定不只有一个关键词,因此我们要考虑所有可能关键词出现的概率。

这个问题怎么处理呢?这个时候我们就要对公式进行变换,需要计算在B1~Bn多个事件同时发生的概率下A事件发生的概率(也就是根据多个关键词的出现概率估算某封邮件是垃圾邮件的概率)。

这里的难点在于样本量比较小,在这种情况下如果直接估算B1到Bn的联合概率会导致存在比较大的误差。所以,贝叶斯公式给出了一个假设:假设各个事件之间是相互独立的,也就是不同的属性会独立地对最后的分类结果产生影响。

所以这里我们就可以将联合概率变成多个事件概率的乘积,那个大大的类似于π的符号就是累乘符号,就像之前提到的累加符号一样,是一种数学符号的简写:

这个推广后的公式就是朴素贝叶斯分类器的核心。思考一下,假如我们有大量的邮件,里面同时包含垃圾邮件和正常邮件,我们只要分别估算不同的敏感词的概率,最后就能计算得到某封邮件是垃圾邮件的概率,而利用朴素贝叶斯解决其他的问题也是同一个套路。

虽然看起来都是数学,但是用起来还是非常简单的。我们可以用朴素贝叶斯分类器处理前面所提到的抽奖问题。我们可以通过计算知道:

  1. P(A):摸到红球的概率是5/8。

  2. P(B):选择A桶的概率是1/2。

  3. P(A|B):在A桶中摸到红球的概率3/4。

假设摸到一个红球,选择到A桶的概率为:

所以如果我们摸到2个红球,2个绿球,只需要带入到上面那个推广后的公式里就可以得到结果了。我们提前训练得到的知识就是摸到红球的概率、摸到绿球的概率、在A中摸到红球或者绿球的概率以及在B中摸到红球或者绿球的概率。





点击阅读原文进入CCAD数据库

长按识别,添加小客服企业微信~



·END·


星标⭐我们不迷路!

想要文章及时到,文末“在看”少不了!


点击搜索你感兴趣的内容吧


往期推荐


机器学习丨七个关键因素:如何选择出最佳机器学习算法?

数字治理丨在“十四五”规划建议中的体现

统计计量丨统计学习圣经!经典教材《统计学习导论》Python版

机器学习丨一文读懂可解释机器学习简史,让你的模型再也不是“Black Box”

推荐 | 数据资产确权浅议

软件应用丨千里之行,始于足下——经济学本科生的SQL之旅(下)

统计计量丨学好计量经济学的关键问题






数据Seminar




这里是大数据、分析技术与学术研究的三叉路口



文丨大数据DT

推荐丨瓜瓜


    欢迎扫描👇二维码添加关注    

点击下方“阅读全文”查看涉农相关数据

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存